#ifndef STUSQL_H
#define STUSQL_H
#include<QSqlDatabase>
#include<QSqlError>
#include<QSqlQuery>
#include <QObject>
#include<QString>
#include<QList>
#include<QVariant>
#include<QMessageBox>
#include<algorithm>
#include<QSqlRecord>
struct StuInfo{
    int id;
    QString name;
    quint8 age;
    quint16 grade;
    quint16 uiclass;
    quint32 studentid;
    QString phone;
    QString wechat;
};
struct UserInfo{
    QString username;
    QString password;
    QString author;
};
class stuSql : public QObject
{
    Q_OBJECT
public:
    static stuSql* ptrstuSql;
    static stuSql* getinstance(){
        return ptrstuSql;
    }

    //连接数据库
    void init();
    explicit stuSql(QObject *parent = 0);
    //查询全部学生数量
    quint32 getStuCnt();
    /**
     * @brief getPageStu 查询第几页学生数据
     * @param page 第几页
     * @param uicnt 每页显示几个
     * @return
     */
    QList<StuInfo> getPageStu(quint32 page,quint32 uicnt);
    //增加学生
    bool addStu(StuInfo);
    bool addStu(QList<StuInfo> l);
    //删除学生
    bool delStu(int id);
    //清空学生表
    bool clearStuTable();
    //修改学生信息
    bool updateStuInfo(StuInfo info);
    //查询全部学生信息
    QList<StuInfo> getAllStu();
    //根据name查询学生信息
    QList<StuInfo> getStuByName(QString name);
    //查询全部用户
    QList<UserInfo> getAllUser();
    //查询用户名是否存在
    bool isExist(QString strUser);
    //更新用户信息
    bool updateUser(UserInfo info);
    //添加单个用户
    bool addUser(UserInfo info);
    //删除单个用户
    bool delUser(QString strUserName);

    bool login(QString username,QString password);
signals:
private:
    QSqlDatabase db;
public slots:
};

#endif // STUSQL_H
